home *** CD-ROM | disk | FTP | other *** search
/ Game Power / Game Power Vol. 1 (HEPP Computer) (1995).iso / S223 / WING.MST < prev    next >
Text File  |  1995-02-20  |  10KB  |  349 lines

  1. '**************************************************************************
  2. '*                       WinG Setup Program
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8.  
  9. ''Dialog ID's
  10. CONST WELCOME       = 100
  11. CONST ASKQUIT       = 200
  12. CONST DESTPATH      = 300
  13. CONST DESTPATH2     = 301
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST CHECK         = 2500
  19. CONST BADPATH       = 6400
  20. CONST RESTART       = 1000
  21.  
  22. ''File Types
  23. CONST WING_RUNFILES     = 1
  24. CONST WING_BUILDFILES   = 2
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. GLOBAL FILEDIALOG   ''File path dialog ID
  30.  
  31. GLOBAL DEST$        ''Default destination directory.
  32. GLOBAL CLOCKDEST$   ''Default destination directory.
  33.  
  34. GLOBAL CHECKSTATES$ ''Dialog list symbol names
  35. GLOBAL WINDRIVE$    ''Windows drive letter.
  36.  
  37. GLOBAL TMPDEST$       '' tmpfile destination
  38.  
  39. GLOBAL bInstallDVA%
  40.  
  41. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  42. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  43. DECLARE SUB UpdateWinG32 (szOrig$) 
  44.  
  45. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  46. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  47. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  48. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  49. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  50. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  51.  
  52. INIT:
  53.     bInstallDVA% = 0
  54.     
  55.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  56.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  57.  
  58.     SetBitmap CUIDLL$, LOGO
  59.     SetTitle "ClockWerx Demo Setup"
  60.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  61.     IF szInf$ = "" THEN
  62.    szInf$ = GetSymbolValue("STF_CWDDIR") + "wing.inf"
  63.     END IF
  64.     ReadInfFile szInf$
  65.  
  66. WELCOME:
  67.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  68.     IF sz$ = "CONTINUE" THEN
  69.    UIPop 1
  70.     ELSE
  71.    GOSUB ASKQUIT
  72.    GOTO WELCOME
  73.     END IF
  74.  
  75.  
  76.     'CHECKSTATES$ = "CheckItemsIn"
  77.     'AddListItem CHECKSTATES$, "ON"
  78. '    AddListItem CHECKSTATES$, "OFF"
  79.     'AddListItem CHECKSTATES$, "ON"
  80.  
  81. CHECK:
  82.     'sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
  83.     'IF sz$ = "CONTINUE" THEN
  84.    'UIPop 1
  85.     'ELSE
  86.    'GOSUB ASKQUIT
  87.    'GOTO CHECK
  88.    ' END IF
  89.  
  90.    WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  91.    DEST$ = WINDRIVE$ + ":\CLOCKWRX"
  92.    FILEDIALOG = DESTPATH2
  93.    GOSUB GETPATH
  94.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  95.  
  96.    ' save the desired destination
  97.    CLOCKDEST$ = DEST$
  98.    CreateDir CLOCKDEST$, cmoVital
  99.  
  100.    ' if the user wants runtime installed
  101.     CHECKSTATES$ = "CheckItemsOut"
  102.     'IF GetListItem(CHECKSTATES$, WING_RUNFILES) = "ON" THEN
  103.  
  104.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  105.    DEST$ = GetWindowsSysDir
  106.    
  107.    AddSectionFilesToCopyList "runtime", SrcDir$, DEST$
  108.    
  109.          '
  110.    ' only use DVA on Windows 3.x
  111.    '
  112.    IF OnWin3x() = 1 THEN
  113.        AddSectionFilesToCopyList "dva", SrcDir$, DEST$
  114.        IF VflatdPresent() = 0 THEN
  115.       CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  116.       bInstallDVA% = 1
  117.        END IF
  118.    END IF
  119.    
  120.    DEST$ = GetRealWindowsSysDir
  121.    
  122.    AddSectionFilesToCopyList "wing32", SrcDir$, DEST$
  123.          Dest1$ = MakePath(DEST$,"wing32.dll")
  124.          Dest2$ = MakePath(DEST$,"wing32.xxx")
  125.    RenameFilePlease Dest1$,Dest2$
  126.    
  127.    'CopyFilesInCopyList
  128.    
  129.    'UpdateWinG32 GetRealWindowsSysDir()
  130.  
  131.    ' END IF
  132.  
  133.    ' if the user wants the source installed
  134.    ' IF GetListItem(CHECKSTATES$, WING_BUILDFILES) = "ON" THEN
  135.    'WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  136.    'DEST$ = WINDRIVE$ + ":\CLOCKWRX"
  137.    'FILEDIALOG = DESTPATH2
  138.    'GOSUB GETPATH
  139.    'SrcDir$ = GetSymbolValue("STF_SRCDIR")
  140.    'CreateDir DEST$, cmoVital
  141.  
  142.    '' add devkit files to destination
  143.     
  144.    ' WinBug.exe taken out for first beta, maybe add it in later, and fix up .lyt file too!
  145.    'CreateDir MakePath(DEST$,"winbug"), cmoNone
  146.    'AddSectionFilesToCopyList "winbug", SrcDir$, MakePath(DEST$,"winbug")
  147.  
  148.    'CreateDir MakePath(DEST$,"bin"), cmoNone
  149.    'AddSectionFilesToCopyList "runtime", SrcDir$, MakePath(DEST$,"bin")
  150.    
  151.    'AddSectionFilesToCopyList "wing32", SrcDir$, MakePath(DEST$,"bin")
  152.          'Dest1$ = MakePath(DEST$,"bin\wing32.dll")
  153.          'Dest2$ = MakePath(DEST$,"bin\wing32.xxx")
  154.    'RenameFilePlease Dest1$,Dest2$
  155.    
  156.    'AddSectionFilesToCopyList "bin", SrcDir$, MakePath(DEST$,"bin")
  157.    'AddSectionFilestoCopyList "readme", SrcDir$, DEST$
  158.    'CreateDir MakePath(DEST$,"include"), cmoNone
  159.    'AddSectionFilesToCopyList "include", SrcDir$, MakePath(DEST$,"include")
  160.    'CreateDir MakePath(DEST$,"help"), cmoNone
  161.    'AddSectionFilesToCopyList "help", SrcDir$, MakePath(DEST$,"help")
  162.    'CreateDir MakePath(DEST$,"lib"), cmoNone
  163.    'AddSectionFilesToCopyList "lib", SrcDir$, MakePath(DEST$,"lib")
  164.    
  165.    GOSUB ADDSAMPLEFILESTOLIST
  166.    CopyFilesInCopyList
  167.    UpdateWinG32 GetRealWindowsSysDir()
  168.    'UpdateWinG32 MakePath( DEST$, "bin" )
  169.    GOSUB ADDGROUP
  170.    ' END IF
  171.  
  172. QUIT:
  173.     ON ERROR GOTO ERRQUIT
  174.  
  175.     IF ERR = 0 THEN
  176.    dlg% = EXITSUCCESS
  177.     ELSEIF ERR = STFQUIT THEN
  178.    dlg% = EXITQUIT
  179.     ELSE
  180.    dlg% = EXITFAILURE
  181.     END IF
  182.  
  183. QUITL1:
  184.     if dlg% = EXITSUCCESS AND bInstallDVA% = 1 then
  185.    sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
  186.    UIPop 1
  187.    IF sz$ = "CONTINUE" THEN
  188.        rc% = RestartWindows
  189.    ENDIF
  190.     endif
  191.  
  192.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  193.     IF sz$ = "REACTIVATE" THEN
  194.    GOTO QUITL1
  195.     END IF
  196.     UIPop 1
  197.     
  198.  
  199.     END
  200.  
  201. ERRQUIT:
  202.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  203.     END
  204.  
  205.  
  206. BADPATH:
  207.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  208.     IF sz$ = "REACTIVATE" THEN
  209.    GOTO BADPATH
  210.     END IF
  211.     UIPop 1
  212.     RETURN
  213.  
  214.  
  215. ASKQUIT:
  216.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  217.  
  218.     IF sz$ = "EXIT" THEN
  219.    UIPopAll
  220.    ERROR STFQUIT
  221.     ELSEIF sz$ = "REACTIVATE" THEN
  222.    GOTO ASKQUIT
  223.     ELSE
  224.    UIPop 1
  225.     END IF
  226.     RETURN
  227.  
  228.  
  229. GETPATH:
  230.     SetSymbolValue "EditTextIn", DEST$
  231.     SetSymbolValue "EditFocus", "END"
  232.  
  233. GETPATHL1:
  234.     sz$ = UIStartDlg(CUIDLL$, FILEDIALOG, "FEditDlgProc", APPHELP, HELPPROC$)
  235.     DEST$ = GetSymbolValue("EditTextOut")
  236.  
  237.     IF sz$ = "CONTINUE" THEN
  238.    IF IsDirWritable(DEST$) = 0 THEN
  239.        GOSUB BADPATH
  240.        GOTO GETPATHL1
  241.    END IF
  242.    UIPop 1
  243.     ELSEIF sz$ = "REACTIVATE" THEN
  244.    GOTO GETPATHL1
  245.     ELSEIF sz$ = "BACK" THEN
  246.    UIPop 1
  247.    GOTO CHECK
  248.     ELSE
  249.    GOSUB ASKQUIT
  250.    GOTO GETPATH
  251.     END IF
  252.  
  253.     RETURN
  254.  
  255. ADDSAMPLEFILESTOLIST:
  256. '  SamplePath$ = MakePath(DEST$,"samples")
  257.    SamplePath$ = CLOCKDEST$
  258.    CreateDir SamplePath$, cmoNone
  259.  
  260. '       Add clockwerx example program
  261.  
  262.    sample$ = "clockwerx"
  263.  
  264.    'CreateDir MakePath(SamplePath$,sample$), cmoNone
  265.    'AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
  266.    AddSectionFilesToCopyList sample$, SrcDir$, SamplePath$
  267.  
  268. '       Other sample programs go here
  269.  
  270.    RETURN
  271.    
  272. ADDGROUP:
  273. '  SamplePath$ = MakePath(DEST$,"samples")
  274.    proggroup$ = "ClockWerx"
  275.    CreateProgmanGroup proggroup$, "", cmoNone
  276.    ShowProgmanGroup  proggroup$, 1, cmoNone
  277.    
  278.         path$ = MakePath( CLOCKDEST$, "clockwrx.exe" )
  279.    CreateProgmanItem proggroup$, "ClockWerx Demo", path$, "", cmoOverwrite
  280.    
  281. '       Other sample programs get added here
  282.  
  283.  
  284.    
  285.    RETURN
  286.  
  287. '**
  288. '** Purpose:
  289. '**     Appends a file name to the end of a directory path,
  290. '**     inserting a backslash character as needed.
  291. '** Arguments:
  292. '**     szDir$  - full directory path (with optional ending "\")
  293. '**     szFile$ - filename to append to directory
  294. '** Returns:
  295. '**     Resulting fully qualified path name.
  296. '*************************************************************************
  297. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  298.     IF szDir$ = "" THEN
  299.    MakePath = szFile$
  300.     ELSEIF szFile$ = "" THEN
  301.    MakePath = szDir$
  302.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  303.    MakePath = szDir$ + szFile$
  304.     ELSE
  305.    MakePath = szDir$ + "\" + szFile$
  306.     END IF
  307. END FUNCTION
  308.  
  309.  
  310. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  311.     szBuf$ = string$(260, 32)
  312.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  313.     IF cbBuf% = 0 THEN
  314.         ERROR STFERR
  315.     ELSE
  316.         IF cbBuf% > 259 THEN
  317.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  318.             ERROR STFERR
  319.         END IF
  320.         szBuf$ = RTRIM$(szBuf$)
  321.         IF MID$(szBuf$, 1, 1) = "\" THEN
  322.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  323.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  324.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  325.         END IF
  326.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  327.             szBuf$ = szBuf$ + "\"
  328.         END IF
  329.         GetRealWindowsSysDir = szBuf$
  330.     END IF
  331.  
  332.     szBuf$ = ""
  333. END FUNCTION
  334.  
  335. SUB UpdateWinG32 (szOrig$) STATIC 
  336.     '
  337.     ' Here we check the version ourselves of wing32.dll, since 
  338.     ' we can't get version checking for Win32 apps from Win16
  339.     '
  340.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  341.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  342.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  343.    RemoveFile FileOrig$, cmoForce
  344.     ELSE
  345.       RemoveFile FileNew$, cmoForce    ' get rid of new file
  346.    RenameFilePlease FileOrig$,FileNew$ ' put back old file
  347.     END IF
  348. END SUB
  349.